package mensagem;

import excecoes.MensagemException;

/**
 * Interface de todas as Mensagens do Sistema.
 * 
 * @author Adalberto Teixeira
 * @author Andrey Menezes
 * @author Laise Florentino
 * @author Laio Francis
 * 
 */
public interface Mensagem {

	static String[] tiposMensagem = { "SMSMensagem",
			"LocalizacaoMensagem", "ChatMensagem", "email",
			"InviteToAddMensagem" };
	// 18 caracteres
	static String tipoSMS = "SMSMensagem";
	static String tipoLocalizacao = "LocalizacaoMensagem";
	static String tipoChat = "ChatMensagem";
	static String tipoEMail = "email";
	static String tipoInviteToAdd = "InviteToAddMensagem";

	/**
	 * Retorna o tipo de mensagem.
	 * 
	 * @return String contendo o tipo da mensagem.
	 */
	String getTipo();

	/**
	 * Retorna o texto da mensagem.
	 * 
	 * @return String contendo o texto da mensagem.
	 */
	String getTexto();

	/**
	 * Retorna o remetente da mensagem.
	 * 
	 * @return String contendo o rementente da mensagem.
	 */
	String getRemetente();

	/**
	 * Retorna o destinatario da mensagem.
	 * 
	 * @return String contendo o destinatario da mensagem.
	 */
	String getDestinatario();

	/**
	 * Altera o tipo de mensagem.
	 * 
	 * @param tipo
	 * @throws MensagemException
	 */
	void setTipo(String tipo) throws MensagemException;

	/**
	 * Altera o texto da mensagem.
	 * 
	 * @param texto
	 * @throws MensagemException
	 */
	void setTexto(String texto) throws MensagemException;

	/**
	 * Altera o remetente da mensagem.
	 * 
	 * @param remetente
	 * @throws MensagemException
	 */
	void setRemetente(String remetente) throws MensagemException;

	/**
	 * Altera o destinatario da mensagem.
	 * 
	 * @param destinatario
	 * @throws MensagemException
	 */
	void setDestinatario(String destinatario) throws MensagemException;
}
